//
//  WBOAuthViewController.swift
//  微博
//
//  Created by lipengfei on 15/9/4.
//  Copyright © 2015年 lipengfei. All rights reserved.
//

import UIKit
import SVProgressHUD

let WBChangeRootViewControllerNotification = "WBJumpToController"
class WBOAuthViewController: UIViewController,UIWebViewDelegate {

///  添加一个webView属性，打开登录页面
    private lazy var webView = UIWebView()
    
    override func loadView() {
///  将view替换为webView
        view = webView
        webView.delegate = self
        
        // 设置页面内容
        title = "登录新浪微博"
        //添加一个navgati
        navigationItem.leftBarButtonItem = UIBarButtonItem(title: "关闭", style: UIBarButtonItemStyle.Plain, target: self, action: "close")
        navigationItem.rightBarButtonItem = UIBarButtonItem(title: "自动填充", style: UIBarButtonItemStyle.Plain, target: self, action: "autoFill")

    }
    /// 自动填充用户信息
    @objc private func autoFill() {
        let js = "document.getElementById('userId').value = '281005001@qq.com';" +
        "document.getElementById('passwd').value = '2660012a';"
        
        // 执行 js 脚本
        webView.stringByEvaluatingJavaScriptFromString(js)
    }

///  关闭控制器
    @objc private func close(){
        SVProgressHUD.dismiss()
        dismissViewControllerAnimated(true, completion: nil)
    }
    override func viewDidLoad() {
        super.viewDidLoad()
///  发送 网络请求
        webView.loadRequest(NSURLRequest(URL: WBNetworkTools.sharedTools.oAuthUrl))
    }
///  webView发送网络请求之后，截取返回的授权码
    /// 通过webView的代理实现
    func webView(webView: UIWebView, shouldStartLoadWithRequest request: NSURLRequest, navigationType: UIWebViewNavigationType) -> Bool {
        print(request)
        // 获取请求的页面，知道找到www.baidu.com
        let urlString = request.URL!.absoluteString
//        检测请求中是否包含需要的前缀，如果没有，继续请求网页，知道找到需要的请求
        if !urlString.hasPrefix(WBNetworkTools.sharedTools.redirectUri)
        {
            return true
        }
        else
        {
//          找到了 需要的请求，获取请求中？ 后面的字符串
            if let query = request.URL?.query where query.hasPrefix("code=")
            {
                //获取code= 后面的字符串，就是授权码
                let code = query.substringFromIndex("code=".endIndex)
               WBUserAccountViewModel.sharedUserAccount.loadUserAccount(code).subscribeError({ (error) -> Void in
                print(error)
                }, completed: { () -> Void in
                    print("登录成功")
                    //用户登录成功，关闭控制器
                    //关闭进度
                    SVProgressHUD.dismiss()
                    //动画完成之后，再切换根视图控制器，能够保证试图控制器被完全的销毁
                    self.dismissViewControllerAnimated(false, completion: { () -> Void in
                        NSNotificationCenter.defaultCenter().postNotificationName(WBChangeRootViewControllerNotification, object: "Main")
                    })
               })
            }
        }
        return false
    }
    func loadUserInfo(userAccount:WBUserAccount){
        WBNetworkTools.sharedTools.loadUserInfo(userAccount.uid!).subscribeNext({ (request) -> Void in
            // 获得用户的信息
            let dict = request as! [String:AnyObject]
            userAccount.name = dict["name"] as? String
            userAccount.avatar_large = (dict["avatar_large"] as? String)!
            }, error: { (error) -> Void in
                print(error)
            }) { () -> Void in
//                //解档
//                 let account = WBUserAccount.loadUserAccount()
//                print(account)
                
        }
    }
///  webView开始加载的代理方法
    func webViewDidStartLoad(webView: UIWebView) {
        SVProgressHUD.show()
    }
    ///当webView开始加载的时候，显示进度，加载完成的时候，关闭进度
    ///注意：当用户加载的时候，点击了关闭按钮，进度条 不会消失（如果不手段关闭的话），需要在控制器被关闭的时候，关闭进度条
///  webView加载完成的代理方法
    func webViewDidFinishLoad(webView: UIWebView) {
        SVProgressHUD.dismiss()
    }
}
